Embodiments presented in this disclosure generally relate to computer software and, more particularly, to techniques for identifying and grouping related errors in a distributed computing environment.
Computer software comprises a set of instructions to be executed by a data processing system. Generally, computer software makes a data processing system useful by providing the instructions for the data processing system to carry out productive tasks. Computer software provides instructions that enable a data processing system to function as, for example, a word processing device, spreadsheet device, or an Internet browsing device. Generally, modern computer software is originally written in a computer programming language using syntactic constructs that are comprehensible by a programmer. The computer programming language represents the instructions embodied in the software. For example, in the “C” programming language, the syntactic term “print” is used to represent an instruction to the data processing system to print the contents of a particular data field. These types of computer programming languages are useful because their syntactic constructs increase the ease with which programmers can create computer software, since the programmers do not need to compose instructions in a language that would be directly understood by the data processing system. Writing instructions in such a language would be far more difficult because such languages bear little or no resemblance to any human language.
A computer program, or a portion thereof, written with such a human-comprehensible programming language is generally referred to as “source code”. Such source code can then be compiled by a compiler to create “compiled code,” which can also be referred to as “executable code.” The executable code can then be executed by, for instance, the data processing system or an intermediate software layer. During execution of the compiled code, certain errors or exceptions may occur for a variety of reasons. For instance, an exception could occur if an instruction attempts to access a variable in an improper way (e.g., attempting to add to an Integer variable with a value of NULL). In some circumstances, the executable code can be configured to handle the exception automatically. However, certain exceptions cannot be properly handled within the executable code. For example, a network client application could throw an exception when the application is unable to connect to a corresponding network server application. While individual applications may be configured to handle exceptions occurring within the application, certain exceptions may be indicative of a greater problem.